/**
 * @param {
 *  1. 当服务起来的时候，可以在浏览器中输入
 *  http://localhost:8000/  就可以访问到web服务器返回给前端的数据；
 *  
 *  2. 每次刷新页面，相当于一次前端get请求；
 *   
 *  3. localhost 就是本地主机 ip: 127.0.0.1
 *   
 *  4. 修改代码之后，记住重启服务 
 *   
 * }
 * 
 */

const http = require('http');
const querystring = require('querystring'); // 查询字符串
const url = require('url');
const fs = require('fs')
// console.log(http, 'http')
// 实现功能：接收前端参数，响应后端数据
// createServer这个方法接收两个一个回调函数作为参数，
// 回调函数有两个参数 request(请求) response（响应）
const server = http.createServer((request, response) => {
  // console.log('前端的请求方式：', request.method)
  // console.log('前端请求路径：--->', request.url)
  // console.log(request.httpVersion, 'httpVersion')
  // requrest.url => 请求路径 + ？ 地址栏参数
  const urlPath = request.url.split('?')[0];
  const params = querystring.parse(request.url.split('?')[1]);
  console.log(urlPath, 'urlPath')
  // 添加响应头 放在代码的最上面 告诉前端，你以什么方式来解析我给你的东西
  response.writeHead(200, { 'Content-type': 'text/html;charset=utf-8' })

  if (urlPath === '/login') {  // 返回页面
    let data = fs.readFileSync('./public/login.html')
    response.end(data)
    return;
  }

  const db = [
    {
      name: 'devin',
      pwd: '123'
    }
  ]

  if (urlPath === '/api/login') { // 返回的json数据
    console.log('params:', params)
    const flag = db.some(v => v.name == params.name && v.pwd == params.pwd)
    if (flag) {
      response.end('登陆成功')
    } else {
      response.end('登陆失败')
    }
    return;
  }

  // 响应给前端的数据  res.end()
  response.end('<h1>404 not Found</h1>')
})

// 监听服务器的方法 两个参数
// 第一个参数 端口号
// 第二个参数 回调函数，就是监听成功之后做什么事？
server.listen(8000, () => {
  console.log(`server port is ${8000}`)
})

